Академия Специальных Курсов по Компьютерным Технологиям
    Главная страница Послать письмо
 
AskIt.ru
   
   
   
   
   
   
 
 
  Главная страница
 
 
<-- Назад Читать дальше -->

9.5.4 Коллекция Fields и объекты Field

Работа с полями объекта Recordset в ADO/VBA, коллекция Fields и объекты Field, свойства Name и Value

Главное содержание Recordset - это то, что лежит в ячейках на пересечении строк (в Recordset они называются записями - records и представлены соответствующими объектами Record) и столбцов. В Recordset столбцы называются полями - объектами Field, которые сведены в коллекцию Fields. Объекты Record используются нечасто - поскольку имен у них нет, а переходить между записями проще при помощи свойств и методов самого объекта Recordset - AbsolutePosition, Find(), Move() и т.п. Коллекция же Fields и объекты Field используются практически в каждой программе.

У коллекции Fields все свойства стандартные, как у каждого объекта Collection:

  • Count - сколько всего столбцов в Recordset
  • Item - возможность вернуть нужный столбец (объект Field) по имени или номеру. Поскольку это свойство является свойством по умолчанию, то можно использовать код, как в нашем примере: rs.Fields("CompanyName"). Есть еще один вариант синтаксиса для обращения к этому свойству:

rs!CompanyName

Методы же имеются как стандартные, так и специфические:

  • Append() - возможность добавить новый столбец в Recordset. Delete() - соответственно, удалить столбец. Обе команды разрешено выполнять только на закрытом Recordset (пока не был вызван метод Open() или установлено свойство ActiveConnection).
  • Update() - сохранить изменения, внесенные в Recordset (будет произведена попытка создать новый столбец на источнике данных, если источник данных по каким-то причинам принимать эти изменения отказался, возникнет ошибка), CancelUpdate() - отменить изменения, внесенные в Recordset.
  • Refresh() - загадочный метод, который ничего не делает (о чем честно написано в документации). Обновить структуру Recordset данными с источника можно только методами самого объекта Recordset.
  • Resync() - работает только для коллекции Fields объекта Record (не Recordset), обновляя значения в строке.

Намного больше интересных свойств у объекта Field:

  • ActualSize - реальный размер данных для текущей записи, DefinedSize - номинальный размер данных для столбца (в байтах), в соответствии с полученной с источника информацией.
  • Attributes - возможность определить битовую маску для атрибутов столбца (допускает ли пустые значения, можно ли использовать отрицательные значения, можно ли обновлять, используется ли тип данных фиксированной длины и т.п.)
  • Name - просто строковое имя столбца. Для столбцов, полученных с источника, доступно только на чтение.
  • NumericScale и Precision - значения, которые определяют соответственно допустимое количество знаков после запятой и общее максимальное количество цифр, которое можно использовать для представления значения.
  • Value - самое важное свойство объекта Field. Определяет значение, которое есть в столбце (если мы пришли через коллекцию Fields объекта Record, то для этой записи, если через Fields объекта Recordset - то для текущей записи). Пример применения - в нашей строке для поиска. Доступно и на чтение, и на запись (в зависимости от типа указателя). ADO позволяет работать с большими двоичными данными (изображения, документы, архивы), что очень удобно. OriginalValue - значение, которое было в этом столбце до начала изменений, UnderlyingValue - значение, которое находится на источнике данных (пока мы работали с Recordset, оно могло быть изменено другой транзакцией, и поэтому OriginalValue и UnderlyingValue могут не совпадать). Свойство Value - это свойство по умолчанию, поэтому эти две строки равноценны:

Debug.Print rs.Fields("CompanyName")

Debug.Print rs.Fields("CompanyName").Value

  • Status - значение, отличное от adFieldOK (значение 0) означает, что поле было недавно программно добавлено в Recordset или при добавлении возникла ошибка на источнике данных.
  • Type - тип данных в соответствии с приведенной в документации таблицей. Например, для типа данных nvarchar возвращается 202.

У объекта Field есть только два метода - AppendChunk() и GetChunk(). Оба этих метода используются только для работы с большими двоичными типами данных (изображениями, документами и т.п.), когда работать обычными способами через свойство Value не получается.

 

   
   
   
   
   
   
   
   
   
   
 
<-- Назад Читать дальше -->

Получить этот учебник в формате PDF (Acrobat Reader) или DOC (Microsoft Word)

 
© 2004-2005, Академия Специальных Курсов
по Информационным Технологиям
.
Все права защищены.

Разработка NevaStudio
г. Санкт-Петербург, Васильевский остров,
20-я линия, д. 7
Офис 101, 2-й этаж
Телефон: 8(812)922-47-60
E-mail: info@askit.ru